package main

import "fmt"

type Person struct {
	name string
	age  int
}

// func (Person) String() string { // 对#v 无效
// 	return "abc"
// }

// 隐式实现的接口方法
func (Person) String() string { // 对#v 无效
	return "abcd"
}

func (Person) GoString() string {
	return "xxyyzz"
}

type MyInt int

func (i MyInt) String() string {
	return fmt.Sprintf("我是一个 int 的打印扩展 = %d", i)
}

func main() {
	// m := Person{"tom", 20}
	// fmt.Println(1, m, &m) //
	// fmt.Printf("2 %v, %v\n", m, &m)
	// fmt.Printf("3 %+v, %+v\n", m, &m)
	// fmt.Printf("4 %#v, %#v\n", m, &m)
	var i MyInt = 123
	fmt.Println(i)

}
